package main

import "fmt"

//数组指针
//重要的是前提：首先是一个指针，然后指向了数组

func main() {
	//创建数组
	arr1 := [4]int{1, 2, 3, 4}
	fmt.Printf("arr1: %d\n", arr1)
	fmt.Printf("arr1指向的地址： %p\n", &arr1)
	//展示的是首元素地址

	//数组指针，其实就是（整体数组类型）的指针变量
	var p1 *[4]int
	p1 = &arr1
	fmt.Printf("p1指向的地址: %p\n", p1)
	fmt.Printf("p1自己的地址: %p\n", &p1)
	fmt.Println("p1指向的地址的值:", *p1)

	//操作数组指针修改数组
	(*p1)[0] = 100 //原生写法
	fmt.Println("arr1:", arr1)
	fmt.Println("p1指向的地址的值: ", *p1)

	//语法糖:由于p1指向了arr1的这个数组，所以可以直接用p1来操控数组
	p1[0] = 200
	fmt.Println("arr1:", arr1)
	fmt.Println("p1指向的地址的值: ", *p1)

}
